package cn.sylinx.common.ext.map;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;

import cn.sylinx.common.ext.reflect.ReflectUtil;

@SuppressWarnings({ "serial", "rawtypes" })
public class ParameterMap extends HashMap<String, Object> {

	public Date getDate(String key) {
		return MapUtil.getDate(this, key);
	}

	public Date getDatetime(String key) {
		return MapUtil.getDatetime(this, key);
	}

	public Map getMap(String key) {
		return MapUtil.getMap(this, key);
	}

	public List getArray(String key) {
		return MapUtil.getArray(this, key);
	}

	public BigInteger getBigInteger(String key) {
		return MapUtil.getBigInteger(this, key);
	}

	public String getString(String key) {
		return MapUtil.getString(this, key);
	}

	public BigDecimal getBigDecimal(String key) {
		return MapUtil.getBigDecimal(this, key);
	}

	public Long getLong(String key) {
		return MapUtil.getLong(this, key);
	}

	public Integer getInteger(String key) {
		return MapUtil.getInteger(this, key);
	}

	public Boolean getBoolean(String key) {
		return MapUtil.getBoolean(this, key);
	}
	
	public Double getDouble(String key) {
		return MapUtil.getDouble(this, key);
	}

	public Float getFloat(String key) {
		return MapUtil.getFloat(this, key);
	}
	
	public <T> T convertObject(Class<T> clz) {
		return ReflectUtil.toObject(this, clz);
	}
	
	public <T> T convertObjectByJson(Class<T> clz) {
		String jsonString = JSON.toJSONString(this);
		return JSON.parseObject(jsonString, clz);
	}
}
